package com.manager.car.dao;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate5.HibernateCallback;

import com.manager.car.po.CandidateInfo;
import com.manager.car.util.PageModel;

public class CandidateInfoDaoImpl extends BaseDao<CandidateInfo> implements ICandidateInfoDao{
		private PageModel<CandidateInfo> pageModel;
	    //分页
		@SuppressWarnings({ "unchecked", "rawtypes" })
		public PageModel<CandidateInfo> queryPageModelByHql(final int pageNo ,final int pageSize,final String hql) {
			this.pageModel = (PageModel<CandidateInfo>)this.getHibernateTemplate().execute(new HibernateCallback() {
	
				public PageModel<CandidateInfo> doInHibernate(Session session) throws HibernateException {
					List<CandidateInfo> list =  session.createQuery(hql)
							.setFirstResult((pageNo-1)*pageSize)
							.setMaxResults(pageSize)
							.list();
					List<CandidateInfo> counts = session.createQuery(hql).list();
					int totalCount = counts.size();
					System.out.println(6);
					pageModel.setCode(0);
					pageModel.setCount(totalCount);
					pageModel.setMsg("我不是懒，我只是不会而已！");
					pageModel.setData(list);
					return pageModel;
				}
			});
			return pageModel;
		}
	    //根据Id查询
		public CandidateInfo queryId(Integer id) {
			return this.getHibernateTemplate().get(CandidateInfo.class, id);
		}
	    //查询全部
		@SuppressWarnings({ "unchecked", "deprecation" })
		public List<CandidateInfo> queryAll() {
				return (List<CandidateInfo>) this.getHibernateTemplate().find("from CandidateInfo c left join fetch c.departId");
		}
	    //添加
		public void add(CandidateInfo ci) {
			this.getHibernateTemplate().save(ci);
		}
	    //删除
		public void delete(CandidateInfo ci) {
			this.getHibernateTemplate().delete(ci);
		}
	    //修改
		public boolean updateCand(CandidateInfo ci) {
			this.getHibernateTemplate().update(ci);
			return true;
		}
		public PageModel<CandidateInfo> getPageModel() {
			return pageModel;
		}
		public void setPageModel(PageModel<CandidateInfo> pageModel) {
			this.pageModel = pageModel;
		}
		
}
